perm filename FORMAT.MLI[MLI,LSP] blob sn#112513 filedate 1975-06-03 generic text, type T, neo UTF8
BEGIN


% This function formats a LISP file in PPRINT format.			%
% The command is:							%
%	(FORMAT  <file>  ...  <file>)					%
% where each <file> is either name or (name.ext) or a line length.	%
% The file is assumed to be in base 8.  The output is put on name.FMT .	%


SPECIAL IBASE, ?*NOPOINT;


FEXPR FORMAT (FILE_LIST);
	BEGIN  NEW FILE_NAME, X, LL, IBASE, ?*NOPOINT;
	IBASE ← 8;
	?*NOPOINT ← NIL;
	FOR NEW FILE IN FILE_LIST DO
		BEGIN
		IF NUMBERP FILE THEN RETURN LL ← FILE	% A line length %
		ELSE IF ATOM FILE THEN FILE_NAME ← FILE
		ELSE FILE_NAME ← CAR FILE;		% Strip off any extension %
		PRINTSTR TERPRI(
			(IF ATOM FILE THEN FILE_NAME
			 ELSE FILE_NAME CAT "." CAT CDR FILE)
			CAT "  →  " CAT FILE_NAME CAT ".FMT");
		EVAL <'INC, <'INPUT, 'DSK?:, FILE>, NIL>;
		EVAL <'OUTC, <'OUTPUT, 'DSK?:, FILE_NAME CONS 'FMT>, NIL>;
		WHILE NOT ATOM X ← ERRSET(READ(), T) DO
			BEGIN
			LINELENGTH LL;
			DPRINT(X ← CAR X, NIL);
			IF NOT ATOM X AND CAR X EQ 'DEFPROP THEN PRINTTY(CADR X);
			END;
		INC(NIL, T);
		OUTC(NIL, T);
		TERPRI NIL;
		END;
	RETURN 'FINISHED;
	END;


END.